package com.xique.door.biz.service;

import com.xique.common.core.web.domain.AjaxResult;
import com.xique.door.api.request.device.RemoteDeviceListRequest;
import com.xique.door.bean.domain.AccessDevice;
import com.xique.door.bean.request.device.*;

import java.util.List;

/**
 * @author shd
 * @create 2022/1/25 10:24
 */
public interface IDeviceBizService {

    /**
     * 获取设备列表
     * @author shd
     * @date 2022/1/25 10:25
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getDeviceList(DeviceListRequest request);

    /**
     * 获取设备详情
     * @author shd
     * @date 2022/2/9 13:25
     * @param deviceId
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getDeviceDetail(Long deviceId);

    /**
     * 添加设备
     * @author shd
     * @date 2022/1/25 10:29
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult addDevice(DeviceAddRequest request);

    /**
     * 编辑设备
     * @author shd
     * @date 2022/1/25 10:31
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult editDevice(DeviceEditRequest request);

    /**
     * 删除设备
     * @author shd
     * @date 2022/1/25 10:32
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult deleteDevice(DeviceDeleteRequest request);

    /**
     * 设备状态改变
     * @author shd
     * @date 2022/1/27 11:38
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult changeStatus(DeviceChangeStatusRequest request);

    /**
     * @description:  重启设备
     * @author caogq
     * @date: 2022/3/5 9:53
     * @Param
     */
    AjaxResult reboot(String devSn);

    /**
     * @description:  查询房屋所绑定的设备
     * @author caogq
     * @date: 2022/3/5 9:53
     * @Param
     */
    List<AccessDevice> selectDeviceByHouseIds(List<Long> houseIds);

    /**
     * @description:  查询车场下的所有设备
     * @author caogq
     * @date: 2022/3/5 9:53
     * @Param
     */
    AjaxResult getAllDevices(Long parkId);

    /**
     * 获取当前项目下所有可用的门禁设备
     * @author shd
     * @date 2022/3/10 9:32
     * @param id
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getDeviceList(Long id);

    /**
     * 获取设备列表
     * @author shd
     * @date 2022/3/10 20:18
     * @param request
     * @return com.xique.common.core.web.domain.AjaxResult
     */
    AjaxResult getDeviceListV1(RemoteDeviceListRequest request);

    AjaxResult openDoor(String devSn, Long userId);
}
